/*
    Object.is()用于判断两个值是否相等
        1. ==
        2. ===
        3. Object.is()


        (1)使用==时会进行隐式转换
        (2)使用===时先判断类型，如果是不同类型直接返回false，相同类型再进行比较
            NaN === NaN  false
            0 === -0     true
        (3)Object.is()和===类似，但是
            NaN === NaN  true
            0 === -0     false
*/

// 自身不等则一定是NaN
function numberIsNaN(value) {
    return value !== value;
};

function myObjectis(a,b) {
    // 特殊情况1：排除NaN === NaN为false
    if (numberIsNaN(a) && numberIsNaN(b)) {
        return true;
    };

    // 特殊情况2：排除 +0 === -0为true 因为 +Infinity !== -Infinity
    if (a === 0 && b === 0) {
        return 1 / a === 1 / b;
    };

    // 正常的情况
    if (a === b) {
        return true;
    };
    return false;
};